﻿<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN">
<html>
<head>
<title>DN_CONTROLINPUT</title>
<meta http-equiv="Content-Type" Content="text/html; charset=utf-8">
<link rel="stylesheet" type="text/css" href="../../../styles/styles.css">
<script language="javascript" src='../../links.js' type="text/javascript"></script>
</head>
<body>

<h1>DN_CONTROLINPUT</h1>
<div class=navbar>
<a href="../../index.html">главная</a> |
<a href="index_dn.html">события</a> |
<a href="../index.html">Dialog API</a>
</div>

<div class=shortdescr>
Обработчик диалога получает событие <code>DN_CONTROLINPUT</code>, когда пользователь нажал клавишу клавиатуры или мыши.
</div>

<h3>Param1</h3>
<div class=descr>
ID элемента (обычно элемент, имеющий фокус ввода) диалога.
<code>-1</code> для случая, если пользователь кликнул клавишей мыши вне диалога.
</div>

<h3>Param2</h3>
<div class=descr>
Указатель на структуру <a href="../../winapi/input_record.html">INPUT_RECORD</a> описывающую клавишу</a>.
</div>

<h3>Return</h3>
<div class=descr>
<code>TRUE</code> - клавишу обработали сами.<br>
<code>FALSE</code> - пусть обрабатывает клавишу стандартный внутренний обработчик диалога.
</div>

<h3>Элементы</h3>
<div class=descr>
<table class="cont">
<tr class="cont"><th class="cont" width="40%">Элемент</th><th class="cont" width="60%">Описание</th></tr>
<tr class="cont"><td class="cont" width="40%">Все</td>
<td class="cont" width="60%">Все элементы диалога, кроме скрытых и недоступных.</td></tr>
</table>
</div>

<h3>Замечания</h3>
<div class=descr>
<ol>
<li>По умолчанию для открытого <a href="../controls/di_combobox.html">DI_COMBOBOX</a> событие <code>DN_CONTROLINPUT</code> в диалоговую процедуру не приходит.
Воспользуйтесь сообщением <a href="dm_setcomboboxevent.html">DM_SETCOMBOBOXEVENT</a>, чтобы включить режим посылки нажатий клавиш в диалоговую процедуру.

<li>Для элемента <a href="../controls/di_usercontrol.html">DI_USERCONTROL</a> координаты курсора (0,0) мыши начинаются с левого-верхнего угла этого элемента.
Для остальных элементов - относительно левого верхнего угла экрана.

<li>Если пользователь кликнул клавишей мыши вне диалога, то:
<ul>
  <li>левая клавиша рассматривается как нажатие клавиши <kbd>Esc</kbd>;
  <li>правая клавиша рассматривается как нажатие клавиши <kbd>Enter</kbd>;
  <li>прочие клавиши (для многокнопочной мыши) не имеют никакого эффекта.
  <li>если функция диалога не обрабатывает событие с <code>Param1 = -1</code>, то диалог будет закрыт.
</ul>
</ol>
</div>

<h3>Пример</h3>
<div class=descr>
Пример обработки сообщения:
<pre class=code>
// вызвать контекстную справку
case DN_CONTROLINPUT:
  const INPUT_RECORD* record=(const INPUT_RECORD *)Param2;
  if (record->EventType==KEY_EVENT && record->Event.KeyEvent.bKeyDown)
  {
    WORD Key=record->Event.KeyEvent.wVirtualKeyCode;
    if (Key==VK_F1)
    {
      Info.ShowHelp(Info.ModuleName, 0, 0);
      return true;
    }
  }
</pre>
</div>

<div class=see>Смотрите также:</div>
<div class=seecont>
<a href="../../service_functions/dialoginit.html">DialogInit</a>,
<a href="dm_key.html">DM_KEY</a>
</div>

</body>
</html>
